#pragma once
#include <vector>
#include "Pose3D.h"

using namespace std;

class MyMath
{
public:
	MyMath();
	~MyMath();
	vector<double> GenerateRandomVector(int M);
	vector<double> multiplier(const vector<double>& uu, int M);
	vector<double> normalRandomGenerater(float noisy=1.0);
	void setUniformRandomGenerater(double max_x, double min_x, double max_y, double min_y, double max_z, double min_z);
	Pose3D& particleInitInGlobalMap(Pose3D & particle, double _yaw, double _pitch, double _roll);
	Pose3D& poseDisturbance(Pose3D& pose,float noisy=1.0);
	
private:
	//the normal distribution paragram
	double mu_x{ 0.0 }, sigma_x{ 0.5 };
	double mu_y{ 0.0 }, sigma_y{ 0.5 };
	double mu_z{ 0.0 }, sigma_z{ 0.2 };
	double mu_yaw{ 0.0 }, sigma_yaw{ 0.01 };
	double mu_pitch{ 0.0 }, sigma_pitch{ 0.01 };
	double mu_roll{ 0.0 }, sigma_roll{ 0.01 };

	//the uniform distribution paragram
	double max_x{ 0.0 }, min_x{ 0.0 };
	double max_y{ 0.0 }, min_y{ 0.0 };
	double max_z{ 0.0 }, min_z{ 0.0 };

};

